An important aspect of the software development process centers on understanding the resources needed to complete projects on-time and according to budget. This often involves real-time forecasting of the completion dates for dynamically generated populations of tasks.
Such tasks may arise as a product of the various test phases of the development process, such as functional verification. Here, pre-planned units of work such as test cases lead to the discovery of defects, which must be fixed. Hence, further units of work are generated dynamically, as defects are discovered during execution of the test cases.
At present, project planning methods for dealing with the dynamically generated work items are imprecise at best. For example, a predetermined percentage of the development team budget may be forecast to cover fixing the defects discovered during the functional verification tests.
Unfortunately, such methods suffer from important drawbacks. Principal among these is the challenge presented to day-to-day project management, which must decide whether the current allocation of resources is adequate to resolve the current backlog of defects in the allotted time. The primary methods for deciding this question are generally ad hoc, as the typical defect lifetime is shorter than the minimum planning unit for most projects; moreover, the cost of updating the project plan with the newly identified tasks would be prohibitive.
Often, the ad hoc forecasts result in overly optimistic estimates of the available capacity of the development team. As a result, development resources may be over-committed to draining the defect backlog, at which point fewer resources are available for the development of new code. In the worst case, this may lead to a positive feedback situation, wherein the increasingly thinly stretched developers generate increasingly more defects, which necessitate the shift of an ever-larger portion of the available resources from developing new code to draining the defect backlog.
Thus there is a need for a better way to forecast the completion date for a dynamically generated defect backlog, or, conversely, to forecast the resources needed to drain a dynamically generated defect backlog by a specified date.